sunshine moonlight 配置linux第二屏幕

十一月 10, 2025 #sunshine #moonlight

安装sunshine和moonlight

# 服务端安装sunshine(需要扩展屏幕主机)
# https://github.com/LizardByte/Sunshine/releases/tag/v2025.924.154138
sudo apt install ./sunshine-ubuntu-24.04-amd64.deb

# 客户端安装moonlight(作为第二屏幕的主机)
sudo flatpak install com.moonlight_stream.Moonlight

虚拟显示器?

使用 Wayland + vkms + Weston headless

modinfo vkms | grep filename
sudo modprobe vkms
ls /sys/class/drm | grep card

# /etc/modprobe.d/vkms.conf
# 示例:创建两个 vkms 虚拟显示器
options vkms nodes=2

sudo apt install libdrm-tests
modetest -M vkms | grep -i connect
sudo apt install wlroots-utils
vainfo --display drm --device /dev/dri/renderD128
pactl info
sudo apt install -y x11-xserver-utils weston
# 主要是 modetest 检查 DRM 输出,Wayland 原生可以使用 wlr-randr 或 Weston 的虚拟输出测试
weston --backend=headless-backend.so --socket=wayland-headless-0
sudo apt install edid-decode read-edid
sudo get-edid > /lib/firmware/edid/1080p.bin

sudo tee /etc/modprobe.d/vkms.conf <<'EOF'
options vkms enable_cursor=1 enable_overlay=1 edid_firmware=edid/1080p.bin
EOF

sudo modprobe -r vkms
sudo modprobe vkms

cat /sys/class/drm/card0-Virtual-1/edid | edid-decode

sudo cat /sys/kernel/debug/dri/0/state
modetest -M vkms -s 63@38:1920x1080

sudo udevadm trigger --subsystem-match=drm --action=change
sudo apt install drm-info
drm_info /dev/dri/card0

debian13 中没有vkms?

特性vkmsvirtio-gpuqxldummy X11
驱动位置内核 DRM内核 DRM内核 DRM用户态 X11
显示输出✅ DRM 原生✅ DRM 原生✅ DRM 原生❌ 无 DRM 节点
硬件依赖无(纯虚拟)需虚拟化环境需 QEMU/SPICE
性能软件模拟,较慢中等中等
Sunshine 兼容⚠️ 需 Xwayland
GNOME 可识别

配置KMS

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done